import { request } from '../request';
import { fetchPostForm } from '../request/encapsulation';

/**
 * 检查是否展示行为验证码（密码输入错误）
 *
 * @param userPhone 手机号
 */
export function fetchIsCaptchaEnable(data: LoginApi.IsCaptchaEnableParams) {
  return fetchPostForm<LoginApi.CaptchaEnable>({
    url: '/api/v1/sys/captcha/enable',
    data
  });
}

/**
 * 获取行为验证码
 *
 * @param captchaType 验证码类型
 * @param clientUid 用户生成的 uuid
 * @param ts 现在的时间戳
 */
export function fetchGetCaptcha(data: LoginApi.GetCaptchaParams) {
  return request<CommonType.RecordObject<any>>({
    url: '/api/v1/sys/captcha',
    method: 'post',
    data
  });
}

/**
 * 检查行为验证码是否正确
 *
 * @param captchaType 验证码类型
 * @param pointJson 滑动的点
 * @param token GetCaptchaParams 接口返回的 token
 */
export function fetchCheckCaptcha(data: LoginApi.CheckCaptchaParams) {
  return request<CommonType.RecordObject | null>({
    url: '/api/v1/sys/captcha/check',
    method: 'post',
    data
  });
}

/**
 * 登录
 *
 * @param userPhone 手机号
 * @param password 密码
 */
export function fetchLogin(data: LoginApi.LoginParams) {
  return request<LoginApi.Token>({
    url: '/api/v1/sys/login',
    method: 'post',
    data
  });
}

/** 获取用户信息 */
export function fetchGetUserInfo() {
  return request<CommonApi.User.UserInfo>({
    url: '/api/v1/sys/comm/user/info',
    method: 'get'
  });
}

/** 退出登录 */
export function fetchLogout() {
  return request({
    url: '/api/v1/sys/logout',
    method: 'post'
  });
}

/**
 * Refresh token
 *
 * @param refreshToken Refresh token
 */
export function fetchRefreshToken(refreshToken: string) {
  return fetchPostForm<LoginApi.Token>({
    url: '/api/v1/sys/token/refresh',
    method: 'post',
    data: {
      refreshToken
    }
  });
}
